package com.zg.common.core.dao.scf.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zg.common.core.dao.BaseEntity;
import com.zg.common.core.dao.ConditionType;
import com.zg.common.core.dao.QueryCondition;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;

/**
 * DESCRIPTION
 *
 * @author zhanfeng.liang
 * @since 2025-07-22
 */
@Data
@NoArgsConstructor
@TableName("SCF_CREDIT")
public class Credit  extends BaseEntity {

    /**
     * 授信类型（产品授信/综合授信）
     */
    @QueryCondition
    private String creditType;

    /**
     * 授信编号（系统自动生成）
     */
    @QueryCondition(type = ConditionType.EQ)
    private String creditCode;

    /**
     * 金融机构（登录后默认回显，不可修改）
     */
    @QueryCondition
    private Long bankId;


    /**
     * 授信产品名称
     */
    @QueryCondition(type = ConditionType.LIKE)
    private String creditName;

    /**
     * 授信产品类型
     */
    @QueryCondition
    private Long productTypeId;

    /**
     * 授信审批流程
     */
    private String creditProcess;

    /**
     * 授信期限单位（年/月/日）
     */
    private String termUnit;

    /**
     * 授信时限下限（年）
     */
    private Integer periodBegin;

    /**
     * 授信时限上限（年）
     */
    private Integer periodEnd;

    /**
     * 授信审批通过时间
     */
    private Date approvalDate;

    /**
     * 授信额度下限（万元）
     */
    private BigDecimal amountLow;

    /**
     * 授信额度上限（万元）
     */
    private BigDecimal amountHigh;

    /**
     * 企业存续时间要求（年以上）
     */
    private Integer companyContinueYears;

    /**
     * 企业信用评分要求
     */
    private String companyScore;


    /**
     * 企业类型要求（多选，逗号分隔）
     */
    private String companyType;

    /**
     * 国标行业要求（多选，逗号分隔）
     */
    private String industry;

    /**
     * 严重违法记录限制（年内不超过）
     */
    private Integer seriousViolationYears;

    /**
     * 严重违法次数限制
     */
    private Integer seriousViolationTimes;

    /**
     * 实缴资本要求（万元以上）
     */
    private BigDecimal paidInCapital;

    /**
     * 注册资本要求（万元以上）
     */
    private BigDecimal registeredCapital;

    /**
     * 人员规模要求（人以上）
     */
    private Integer staffScale;



    // 纳税信用相关字段
    private String taxCredit;                      // 纳税信用（A、B、C、D、M等）
    private Integer stateLandTransfer;             // 国有土地受让次数以下
    private Integer samplingProblem;               // 抽查问题次数以下
    private Integer supplierCount;                 // 供应商数 个以上
    private Integer customerCount;                 // 客户数量 个以上
    private Integer propertyRightTransaction;      // 产权交易次数以下
    private Integer assetAuction;                  // 资产拍卖次数以下

    // 经营风险相关字段
    private Integer administrativePenalty;         // 行政处罚次数以下
    private Integer environmentalPenalty;          // 环保处罚次数以下
    private Integer publicWarning;                 // 公示催告次数以下

    // 法律风险相关字段
    private Integer judicialAuction;               // 司法拍卖次数以下
    private Integer judicialCase;                  // 司法案件次数以下
    private Integer defendantCase;                 // 被告立案次数以下
    private Integer courtNotice;                   // 开庭公告次数以下

    // 知识能力相关字段
    private Integer patentInfo;                    // 专利信息 个以上
    private Integer softwareCopyright;             // 软件著作 个以上

    // 财务情况相关字段
    private BigDecimal currentRatioMin;            // 流动比例 最小值%
    private BigDecimal currentRatioMax;            // 流动比例 最大值%
    private BigDecimal quickRatioMin;              // 速动比例 最小值%
    private BigDecimal quickRatioMax;              // 速动比例 最大值%
    private BigDecimal assetLiabilityRatioMin;     // 资产负债率 最小值%
    private BigDecimal assetLiabilityRatioMax;     // 资产负债率 最大值%
    private BigDecimal equityRatioMin;             // 产权比率 最小值%
    private BigDecimal equityRatioMax;             // 产权比率 最大值%
    private BigDecimal debtToEquityRatioMin;       // 加权净资负负载率 最小值%
    private BigDecimal debtToEquityRatioMax;       // 加权净资负负载率 最大值%
    private BigDecimal grossProfitMarginMin;       // 毛利率 最小值%
    private BigDecimal grossProfitMarginMax;       // 毛利率 最大值%
    private BigDecimal netProfitMarginMin;         // 净利率 最小值%
    private BigDecimal netProfitMarginMax;         // 净利率 最大值%

    private String state;

    @TableField(exist = false)
    private String productType;

    @TableField(exist = false)
    private String bankName;

}
